package com.sort;

import java.util.Arrays;

/**
 * 直接选择排序
 *
 * @author zhongyi_yang
 */
public class SelectSort {
	/**
	 * 直接选择排序
	 *
	 * @param data
	 */
	public static void selectSort(DataWrap[] data) {
		System.out.println("开始排序：");
		int arrayLength = data.length;
		//依次进行n-1趟比较，第i趟比较将第i大的值选出放在i位置上
		for (int i = 0; i < arrayLength - 1; i++) {
			//minIndex永远保留本趟比较中最小值的索引
			int minIndex = i;
			for (int j = i + 1; j < arrayLength; j++) {
				//如果第i位置的数据>j位置的数据，就交换他们
				if (data[minIndex].compareTo(data[j]) > 0) {
					minIndex = j;
				}
			}
			//每趟比较最多交换一次
			if (minIndex != i) {
				DataWrap tmpDataWrap = data[i];
				data[i] = data[minIndex];
				data[minIndex] = tmpDataWrap;
			}
			System.out.println(Arrays.toString(data));
		}
	}

	public static void main(String[] args) {
		DataWrap dataWrap[] = {new DataWrap(21, ""),
				new DataWrap(30, ""),
				new DataWrap(49, ""),
				new DataWrap(30, "*"),
				new DataWrap(16, ""),
				new DataWrap(9, "")};
		System.out.println("排序前：" + Arrays.toString(dataWrap));
		selectSort(dataWrap);
		System.out.println("排序后：" + Arrays.toString(dataWrap));
	}
}
